//
// this STATIC_ASSERT like BOOST_STATIC_ASSERT (which i don't understand), but not the same.
//

template < bool x > struct static_assert_failed;
template < > struct static_assert_failed< true > {};
template < int x > struct static_assert_test{};

#define STATIC_ASSERT( S ) typedef static_assert_test< sizeof( static_assert_failed< (bool)(S) > ) > __static_assert_typedef__

int main( int argc, char *argv[] )
{
	// STATIC_ASSERT( 3 < 2 );
	STATIC_ASSERT( 1 < 2 );
	STATIC_ASSERT( sizeof( long ) == sizeof( int ) ); 
}
